Ví dụ JSP

Mặc dầu bộ biên dịch JSP kiến tạo mã nguồn Java cho servlet hoặc phát ra mã byte của Java (byte code) trực tiếp, chúng ta cũng nên hiểu quá trình bộ biên dịch JSP biến đổi một trang JSP trở thành một servlet của Java như thế nào. Chẳng hạn, chúng ta thử cân nhắc những dữ liệu nhập của JSP sau đây, và kết quả Java Servlet mà nó sinh tạo.

Trang JSP nhập vào

 <%@ page errorPage="myerror.jsp" %> <%@ page import="com.foo.bar" %> <html> <head> <%! int serverInstanceVariable = 1;%>... <% int localStackBasedVariable = 1; %> <table> <tr><td><%= toStringOrBlank("expanded inline data"  + 1) %></td></tr>...

Kết quả servlet được sinh tạo

 package jsp_servlet; import java.util.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import com.foo.bar; //nhập nội do kết quả của dòng <%@ page import="com.foo.bar" %> import... class _myserlvet implements javax.servlet.Servlet, javax.servlet.jsp.HttpJspPage {     //được chèn thêm vào       //do kết quả của dòng <%! int serverInstanceVariable = 1;%>     int serverInstanceVariable = 1; ...     public void _jspService(javax.servlet.http.HttpServletRequest request,                              javax.servlet.http.HttpServletResponse response)       throws javax.servlet.ServletException,              java.io.IOException     {         javax.servlet.ServletConfig config =...;//lấy cấu hình của servlet vào         Object page = this;         PageContext pageContext =...;//lấy ngữ cảnh của trang đối với yêu cầu này          javax.servlet.jsp.JspWriter out = pageContext.getOut();         HttpSession session = request.getSession(true);         try {             out.print("<html>\r\n");             out.print("<head>\r\n");     ...             //sinh ra từ dòng <% int localStackBasedVariable = 1; %>             int localStackBasedVariable = 1;      ...             out.print("<table>\r\n");             out.print("   <tr><td>");             //để ý, toStringOrBlank() đổi biểu thức thành chuỗi ký tự hoặc              // nếu biểu thức không tồn tại (null), dùng chuỗi ký tự trống rỗng (empty string) thay thế.             //từ dòng <%= "expanded inline data " + 1 %>             out.print(toStringOrBlank("expanded inline data " + 1));             out.print("   </td></tr>\r\n");     ...         } catch (Exception _exception) {             //dọn dẹp sạch sẽ và chuyển hướng điều khiển tới trang báo lỗi như trong dòng <%@ page errorPage="myerror.jsp" %>         }    } }